-
Notifications
You must be signed in to change notification settings - Fork 118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DRAFT: Tiling Stage Fixes and Improvements #65
base: dev
Are you sure you want to change the base?
Conversation
- Comparisons using OpenCV and NaN numbers can have undetermined results due to some shortcuts OpenCV takes in performing comparison operations - This can results in odd behavior where only some of the NaNs are included
@zthorson One thing about the shift: Did you realize that the tileing is using EPSG:3857? This is slightly different from UTM coordinates and could be the root of the shift depending on the visualization that you use. Edit: As a frame of reference I use this file for my dataset to visualize the tiles. It must be copied into the folder where the different zoom levels are.
|
@laxnpander I was using QGIS to visualize the tiles, but it seems like that file may work better, as I won't have to deal with the caching that QGIS uses. I'm noticing a nice memory footprint improvement using the tiling stage instead of the mosaicing one that I'm hoping to test on a device soon as well. |
- Merge, even with the previous patches, appears to improperly detect which tiles to overwrite when creating zoomed out tiles. This results in empty mosaic/elevation data overwriting good data in some tiles. - The real fix would be to figure out what is going on with merge, but blend() is a good workaround
70b71e0
to
9829386
Compare
@zthorson In theory, memory required should be more or less constant as all unnecessary data is being written to the disk and removed from the RAM and only relevant tiles dynamically loaded. However, this of course comes with more read/write operations and possibly a significantly higher CPU load. So you will have to check whether this works for you or not. In case you hit a performance sink somewhere, I have two things in mind where you might want to make adjustments:
|
- TMS is a standard that isn't used by a lot of mapping software, so allow usage of non-tms tiles (Google/OSM) as well with a config flag.
* -1 can be used in max zoom level to select zoom based on GSD * Max zoom can be overidden if it is significantly higher than the available GSD to avoid oversampling an image.
- To help save/load cache files more easily, the stage can be initialized with a specific path for all cache items, rather than the default stage path. - If a path is not specified, operation will be unchanged.
- Shutdown is cleaner if we join the cache thread when the other threads shut down. Otherwise, the cache thread may keep running up until the program exits, causing odd behavior.
- To allow the system to reset after subsequent runs, it can be useful to have the system automatically delete cache tiles when starting a new run. - This is added as a command line option to allow enabling/disabling of the behavior - This is preparation for allowing a job to resume (sans old keypoints) after a crash
062a04d
to
00d50fc
Compare
- This was causing crashes on iOS for a currently unknown reason. It was removed since the file I/O isn't expected to be called while the application is running anyway.
- To better integrate with external systems, a message that occurs when cache files are written to disk to be consumed by other applications is added. - Contains: - Path to the tile directory w/ x/y/z tiles - The type of tile (png) - The region of tiles updated at each zoom level - The topic - Partial updates and full updates are both written out when new tiles are written to the drive - Required moving tile_cache into the tiling stage for tighter integration with messages [ES-217]
- Added new parameter to tiling.yaml to control the option - All tiles are placed into the cache structure, but no data is loaded by default - Right now, it expects to find color_rgb, elevation_angle, and elevation data to work properly [ES-218]
- The previous roi request wasn't being saved, causing the prediction to always just use the current roi. Fixed. [ES-218]
- When loading tiles from the disk, you wouldn't get an update that new tiles were present when loading from the cache. This update publishes the topic a single time with the loaded tiles when the tiling node is first started. - We wait until the node is started to ensure all listeners are set up first. [ES-218]
Description
Fixes to numerous small bugs and odd behaviors discovered when trying to use the tiling stage for the first time in a while.
There are also some improvements to make the output from the tiler more compatible with different tile viewing tools, including those that doesn't implement the TMS standard.
Reason
Method / Design
use_tms
flag to the tiling.yaml file to allow using TMS, or Google/OSM standard tile names in the cache. This primiarily inverts the y axis. See here: https://www.maptiler.com/google-maps-coordinates-tile-bounds-projection/Testing
Compiled and run on:
Other Notes